﻿#ifndef DATAPAGE_H
#define DATAPAGE_H

#include <QWidget>
#include <OpcUA/opcua_qthread.h>
#include "qcustomplot/qcustomplot.h"
#include <QRandomGenerator>
#include <QMap>

namespace Ui {
class DataPage;
}

//数据类型枚举
enum class DataType {
    Temperature,
    Pressure,
    //在此处添加更多类型
};

class DataPage : public QWidget
{
    Q_OBJECT

public:
    explicit DataPage(OpcUA_QThread * opcUA, QWidget *parent = nullptr);
    ~DataPage();

    //添加指定类型的数据点到折线图
    void addChartData(DataType type, double x, double y);

    //清除指定类型的图表数据
    void clearChartData(DataType type);

    //切换显示的数据类型
    void switchDataType(DataType type);

private slots:
    void on_pushButton_Temperature_clicked();

    void on_pushButton_Pressure_clicked();

private:
    // 图表初始化函数
    void initChart();
    // 添加模拟数据（按类型）
    void addSimulatedData(DataType type);
    // 事件过滤器（处理控件大小变化）
    bool eventFilter(QObject *watched, QEvent *event) override;
    // 更新图表标题和轴标签
    void updateChartLabels(DataType type);

private:
    OpcUA_QThread * myOpcUA;
    Ui::DataPage *ui;
    QCustomPlot *m_customPlot;  //QCustomPlot实例

    DataType m_currentType;     //当前显示的数据类型
    QMap<DataType, QCPGraph*> m_graphs;  //存储不同类型的折线图
    QMap<DataType, QVector<double>> m_xData;  //按类型存储X数据
    QMap<DataType, QVector<double>> m_yData;  //按类型存储Y数据
};

#endif // DATAPAGE_H
